public class cuttingRope {
    // 使用动态规划
    public int _cuttingRope(int n) {
        if (n == 1)
            return 1;
        if (n == 2)
            return 1;
        if (n == 3)
            return 2;

        // 定义容器
        int[] dp = new int[n + 1];

        // 容器初始化
        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 3;
        // 状态转移
        for (int i = 4; i <= n; i++) {
            int maxValue = 0;
            for (int j = 1; j <= i / 2; j++) {
                maxValue = Math.max(maxValue, dp[i] * dp[i - j]);
            }
            dp[i] = maxValue;
        }

        return dp[n];
    }
}
